The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Increases in hardware and on-premises software support costs has given way to a new technology delivery model in which an application service provider hosts applications coupled to data storage units on networked devices that are owned by the application service provider. Using “software as a service” or SaaS, the application service provider's customers, typically business enterprises, connect to the hosted applications via a web browser and enter data via the applications with the expectation that the data entered will be available on-demand whenever needed. The customers typically access the data for various data mining or data aggregation operations required to perform various analytics, such as determining particular trends related to their enterprise's operations. A practical example is analysis of the compensation that is due to employees of an enterprise that uses an incentive compensation plan in which compensation is tied to sales, quotas, products, services and customers, all of which may vary over time. Each different enterprise customer of the application service provider is considered a “tenant” having data that is commingled in a multi-tenant database system using a single shared database, yet subject to security controls that prevent one tenant from viewing or using the data of another tenant; the tenants may be competitors or simply require confidentiality of their data.
In such a system, the application service provider rarely has advanced notice of when a customer may request access to its data; therefore, data entered by customers must be available at all times. Consequently, the application service provider must ensure that data entered by customers is always recorded and stored, and that customers may access that data, on-demand, for later consumption.
Customer data is not always in a standardized format desired by the application service provider, however. The process of converting data from a customer-specific format into a different format, such as a format needed for a multitenant service, is generally referred to as Extract, Transform, and Load (ETL). ETL may result in the creation of temporary data and/or may store customer data in a variety of places. In many instances, the ETL process is a black box to customers—there is no insight available, and customers may not even be able to access their data until after the ETL process is completed.
However, managing access to customer data, both during ETL and after ETL is completed, is a challenging task. Application service providers are hesitant to give customers full access to their data in the production database, as they could potentially do great harm, such as accidental deletions, causing crashes, accidentally accessing or modifying another tenant's data, etc. Simultaneously, the customer expects to have access to their own data, even in an intermediate form, whenever they want.
Structured Query Language (SQL) has been used in past database systems as a way to express instructions to a computer-implemented database about what data to search for, retrieve and provide.